package com.ruoyi.rebateRule.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 返佣规则对象 wdmd_rebate_rule
 * 
 * @author ruoyi
 * @date 2025-10-11
 */
@Data
public class RebateRule extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 规则ID */
    private Long ruleId;

    /** 规则名称 */
    @Excel(name = "规则名称")
    private String ruleName;

    /** 商品类型：1-自助餐券 2-节日礼盒 3-住宿套餐 */
    @Excel(name = "商品类型：1-自助餐券 2-节日礼盒 3-住宿套餐")
    private String productType;

    /** 适用等级ID */
    @Excel(name = "适用等级ID")
    private Long gradeId;

    /** 适用层级：1-一级 2-二级 */
    @Excel(name = "适用层级：1-一级 2-二级")
    private String relationLevel;

    /** 返佣类型：1-比例 2-固定金额 */
    @Excel(name = "返佣类型：1-比例 2-固定金额")
    private String rebateType;

    /** 返佣值(比例或金额) */
    @Excel(name = "返佣值(比例或金额)")
    private BigDecimal rebateValue;

    /** 最低订单金额 */
    @Excel(name = "最低订单金额")
    private BigDecimal minOrderAmount;

    /** 规则生效时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "规则生效时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date validTimeStart;

    /** 规则失效时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "规则失效时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date validTimeEnd;

    /** 是否全局规则：0-否 1-是 */
    @Excel(name = "是否全局规则：0-否 1-是")
    private String isGlobal;

    /** 状态（0=上架 1=下架） */
    @Excel(name = "状态", readConverterExp = "0==上架,1==下架")
    private String status;

    /** 删除标志（0存在 2删除） */
    private String delFlag;

    /** 版本号（乐观锁） */
    @Excel(name = "版本号", readConverterExp = "乐=观锁")
    private Long version;


    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("ruleId", getRuleId())
            .append("ruleName", getRuleName())
            .append("productType", getProductType())
            .append("gradeId", getGradeId())
            .append("relationLevel", getRelationLevel())
            .append("rebateType", getRebateType())
            .append("rebateValue", getRebateValue())
            .append("minOrderAmount", getMinOrderAmount())
            .append("validTimeStart", getValidTimeStart())
            .append("validTimeEnd", getValidTimeEnd())
            .append("isGlobal", getIsGlobal())
            .append("status", getStatus())
            .append("delFlag", getDelFlag())
            .append("version", getVersion())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .append("createBy", getCreateBy())
            .append("updateBy", getUpdateBy())
            .append("remark", getRemark())
            .toString();
    }
}
